package netWork;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Scanner;

public class Home03ServerA {

    ServerSocket serverSocket;
    public Home03ServerA(int port) throws Exception {
        serverSocket = new ServerSocket(port);//创建一个指定端口号
        while (true){

            Socket socket = serverSocket.accept();
            start(socket);

        }}
    public void start(Socket socket) throws Exception {
        //查找包含该关键字的文件
        try (BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
             BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
             Scanner scannerRead = new Scanner(socket.getInputStream())) {
            String name = scannerRead.next();
            File file = new File("C:\\Users\\86186\\Music\\联想安卓音乐");
            File file1 = null;
            if(file.isDirectory()){
                //如果是目录就遍历这个目录里的所有文件名
                File[] files = file.listFiles();
                assert files != null;
                for (File n:files) {
                    if(n.isFile()){
                        //如果找到就加入这个数组
                        //只要包含就加入
                        if(n.getName().contains(name)){
                            file1 = n;
                            break;
                        }
                    }
                }
            }

            assert file1 != null;
            System.out.print("歌名 + "+file1.getName());
            writer.write(file1.getName());
            writer.newLine();
            writer.flush();
            // bos.flush();
            //如果名字一样就返回该文件
            byte[]b = UtilAPi.getByteArray(new FileInputStream(file1));//获取二进制数组
            //将该文件返回
            bos.write(b);
            System.out.println(socket.getInetAddress().getHostName()+"/"+socket.getPort()+" 结束");
        }
    }


//    private ArrayList<File> lookUp(String request) {
//        //创建一个读取文件的流
//        //从这个目录中查找
//        File file = new File("C:\\Users\\86186\\Music\\VipSongsDownload");
//        ArrayList<File> arrayList = new ArrayList<>();
//        if(file.isDirectory()){
//            //如果是目录就遍历这个目录里的所有文件名
//            File[] files = file.listFiles();
//            assert files != null;
//            for (File n:files) {
//               if(n.isFile()){
//                   //如果找到就加入这个数组
//                   //只要包含就加入
//                   if(n.getName().contains(request)){
//                       arrayList.add(n);
//                   }
//               }
//            }
//        }
//        return arrayList;
//    }

    /**
     * 读取文件,查找音乐,这个是服务器
     */

    public static void main(String[] args) throws Exception {
        Home03ServerA serverA = new Home03ServerA(9999);


    }
}
